Content database for producing solution documents

ABSTRACT

Systems and methods for a content database storing extracted content. A content manager engine executing on a computer system performs various functions in relation to the content database. The content manager engine may extract content fragments from documents of different document types and store the content fragments to content entries of the content database. The content manager engine may reproduce a selected document using the content database, allow direct modification of content entries, merge two or more documents of different types into a single document, and create a new document based on the content entries.

CROSS-REFERENCE TO RELATED APPLICATION

This application is a continuation of U.S. patent application Ser. No.13/534,655, filed Jun. 27, 2012, and entitled “CONTENT DATABASE FORPRODUCING SOLUTION DOCUMENTS” the disclosure of which is incorporatedherein by reference in its entirety for all purposes.

FIELD OF THE INVENTION

The present invention relates to storage systems and, more specifically,to a content database for storing extracted content.

BACKGROUND OF THE INVENTION

A storage system typically comprises one or more storage devices intowhich information may be entered, and from which information may beobtained, as desired. The storage system includes a storage operatingsystem that functionally organizes the system by, inter alia, invokingstorage operations in support of a storage service implemented by thesystem. The storage system may be implemented in accordance with avariety of storage architectures including, but not limited to, anetwork-attached storage environment, a storage area network and a diskassembly directly attached to a client or host computer. The storagedevices are typically disk drives organized as a disk array, wherein theterm “disk” commonly describes a self-contained rotating magnetic mediastorage device. The term disk in this context is synonymous with harddisk drive (HDD) or direct access storage device (DASD).

The storage operating system of the storage system may implement ahigh-level module, such as a file system, to organize the informationstored on volumes as a hierarchical structure of storage objects, suchas files. The storage system may be further configured to allow manyservers to access storage objects stored on the storage system. In thismodel, the server may execute an application that “connects” to thestorage system over a computer network, such as a point-to-point link,shared local area network (LAN), wide area network (WAN), or virtualprivate network (VPN) implemented over a public network such as theInternet. Each server may request the data services of the storagesystem by issuing access requests (read/write requests) as file-basedand block-based protocol messages (in the form of packets) to the systemover the network.

A plurality of storage systems may be interconnected to provide astorage system architecture configured to service many servers. In someembodiments, the storage system architecture provides one or moreaggregates, each aggregate comprising a set of one or more storagedevices (e.g., disks). Each aggregate may store one or more storageobjects, such as one or more volumes. The aggregates may be distributedacross a plurality of storage systems interconnected as a cluster. Thestorage objects (e.g., volumes) may be configured to store content ofstorage objects, such as files, served by the cluster in response tomulti-protocol data access requests issued by servers.

Each storage system (node) of the cluster may include (i) a storageserver (referred to as a “D-blade”) adapted to service a particularaggregate or volume and (ii) a multi-protocol engine (referred to as an“N-blade”) adapted to redirect the data access requests to any storageserver of the cluster. In the illustrative embodiment, the storageserver of each storage system is embodied as a disk element (D-blade)and the multi-protocol engine is embodied as a network element(N-blade). The N-blade receives a multi-protocol data access requestfrom a client, converts that access request into a cluster fabric (CF)message and redirects the message to an appropriate D-blade of thecluster.

The storage systems of the cluster may be configured to communicate withone another to act collectively to increase performance or to offset anysingle storage system failure within the cluster. The cluster providesdata service to servers by providing access to a shared storage(comprising a set of storage devices). Typically, servers will connectwith a storage system of the cluster for data-access sessions with thestorage system. During a data-access session with a storage system, aserver may submit access requests (read/write requests) that arereceived and performed by the storage system. Each server typicallyexecutes numerous applications requiring the data services of thecluster.

As discussed above, the storage operating system of the storage systemmay implement a file system for storing a plurality of storage objects,such as computer files. These files (or “documents”) may be produced bya wide variety of different types of document applications, such as aword processor, spreadsheet application, presentation application, imageapplication, etc. Currently, there are also many different types offormats for each type of document application. As such, the storagesystem may store a plurality of different document types (that are in aplurality of different types of formats and compatible with a pluralityof different types of applications). This may be problematic whenattempting to access the content in the different document types on thestorage system. Typically, in order to access the content of differentdocument types, each application corresponding to each document typewould need to be installed and available for accessing the content. Assuch, there is a need for a more accessible method for storing documentson a storage system.

Another issue with current storage systems is the inefficient manner formodifying related documents stored on the storage system. For example,assume that a large number of documents each relate to a particulartechnology. If the particular technology has been updated, to update thedocuments accordingly, each of the documents would need to beindividually accessed, modified, and saved to the file system. This isdue to the fact that the documents are stored as independent files onthe file system, each document having no connection or relationship tothe other. Such an update process may consume large amounts of time andcomputer and human resources. As such, there is a need for a moreefficient method for modifying related documents on a storage system.

Finally, another issue with current storage systems is the inefficientmanner used for providing solution documents for clients/users of thestorage systems for any issues or queries regarding storage systemhardware and/or software the clients/users may have. The solutiondocument may provide a description of how to resolve the client's issueor query. Typically, to provide a solution document to the client, anadministrator or engineer is needed to interact with the client todetermine their issue or query, determine any storage system services,products, and/or technologies related to the issue or query, identifyany documents in the storage system describing these services, products,and/or technologies, modify any of the documents if any of thecorresponding services, products, and/or technologies has been recentlyupdated, and produce a solution document for the client that includesthe description of the related services, products, and/or technologies.Given that a large number of issues or queries may be received byclients, such a solution process for each issue or query maycollectively consume large amounts of time and computer and humanresources. As such, there is a need for a more efficient method forproviding solution documents for the clients/users.

SUMMARY OF THE INVENTION

Systems and methods for a content database storing extracted content aredescribed herein. A content manager engine executing on a computersystem may be configured to perform various functions in relation to thecontent database. In some embodiments, the content manager engine isconfigured to process documents of different document types to producecontent entries in the content database. The content manager engine maybe further configured to reproduce a selected document using the contentdatabase, to directly modify content entries in the content database,merge two documents of different types into a single document, andproduce solution documents.

The content manager engine may be configured to process documents ofdifferent document types by extracting content of the documents andstoring the content to the content database as content entries. Aplurality of documents may be processed to populate the content entriesof the content database. The plurality of processed documents maycomprise a plurality of different document types in any format. As such,the content database provides a repository of extracted/deconstructedcontent that is accessible to users without requiring installation anduse of the wide variety of document applications that would otherwise beneeded to access the different document types.

The content manager engine may also be configured to produce a newdocument based on a document mapping associated with an originalselected document. The new document comprises a deconstructed version ofthe original selected document, without the metadata or formatting ofthe original selected document. The new document may also be modified bythe user and saved as a document file to a file system. The contentmanager engine may be further configured to merge two documents ofdifferent types into a single document by extracting content of the twodocuments, storing the content to the content database as contententries, and inserting the content into a new document. In someembodiments, the content manager engine may also be configured to allowdirect modification of content fragments in content entries of thecontent database. In these embodiments, modifying a content entryprovides automatic updating/modifying of any document mapping, groupmapping, or solution mapping using the modified content entry and anysubsequent document produced using the modified content entry.

In some embodiments, a group mapping may be produced to group two ormore related document mappings that are associated with two or morerelated documents. As such, the group mapping may map to two or morerelated document mappings that are associated with the content of two ormore related documents. As such, a group mapping may represent (and mapto) content for an overall topic, such as a particular storage systemservice, product, and/or technology. Each document mapping specified ina group mapping may represent (and map to) content for a particularsub-topic of the overall topic. It may be convenient to group suchrelated content, and their corresponding document mappings, as a groupmapping. One or more group mappings may be stored to a group mapping DS.

In some embodiments, the content manager engine may be configured toproduce a solution document using the content database. The solutiondocument may be produced based on one or more received user selections.In some embodiments, a solution document may be provided forclients/users for issues or queries regarding computer systems, such ascomputer hardware and/or software, storage system hardware and/orsoftware, etc. For example, the solution document may comprise adescription of any computer system services, products, and/ortechnologies related to the client's issue or query, and may alsocontain any execution steps (such as installation steps, configuringsteps, etc.) needed to implement the related services, products, and/ortechnologies. The solution document may include various types ofcontent, such as text, images (e.g., illustrations, diagrams,flowcharts, etc.), presentation slides, etc.

In some embodiments, a solution document is produced using a solutionmapping. A solution mapping may map one or more received user selectionsto one or more document mappings and/or one or more group mappings. Thedocument and/or group mappings will then map to content entries in thecontent database having content fragments relevant to the received userselections. The content fragments comprise a solution document that isrelated to the user's issue or query. A plurality of solution mappingsmay be produced to map a wide variety of different user selections anddifferent combinations of user selections to document and/or groupmappings. The solution mappings are stored to a solution mapping datastructure.

BRIEF DESCRIPTION OF THE DRAWINGS

The novel features are set forth in the appended claims. However, forpurpose of explanation, several embodiments of the invention are setforth in the following figures.

FIG. 1 is a block diagram of an exemplary storage system environment inwhich some embodiments operate;

FIG. 2 is a schematic block diagram of an exemplary server system thatmay be employed in the storage system environment of FIG. 1;

FIG. 3 shows a flowchart of a method for processing a document, inaccordance with some embodiments;

FIG. 4 shows a conceptual illustration of the steps for processing aselected document;

FIG. 5 shows a conceptual diagram of an exemplary document mapping DS;

FIG. 6 shows a flowchart of a method for producing a new document usinga document mapping;

FIG. 7 shows a flowchart of a method for merging documents of differenttypes;

FIG. 8 shows a flowchart of a method for modifying content entries inthe content database;

FIG. 9 shows a conceptual diagram of an exemplary group mapping DS;

FIG. 10 shows a flowchart of a method for producing a new document usinga group mapping;

FIG. 11 shows a conceptual diagram of an exemplary solution mapping DS;

FIG. 12 shows a flowchart of a method for producing a solution documentusing the content database; and

FIG. 13 is a diagram that conceptually illustrates exemplary steps ofthe method of FIG. 12.

DETAILED DESCRIPTION

In the following description, numerous details are set forth for purposeof explanation. However, one of ordinary skill in the art will realizethat the embodiments described herein may be practiced without the useof these specific details. In other instances, well-known structures anddevices are shown in block diagram form in order to not obscure thedescription with unnecessary detail.

The description that follows is divided into three sections. Section Idescribes a storage system environment in which some embodimentsoperate. Section II describes a content database for storing extractedcontent. Section III describes producing solution documents using thecontent database.

I. Storage System Environment A. Overview

FIG. 1 is a block diagram of an exemplary storage system environment 90in which some embodiments operate. The environment 90 comprises one ormore server systems 110 that may each access one or more storage systems100 that are coupled to the server systems 110 via a network 167. Theone or more storage systems 100 may comprise a cluster storage system.Each storage system 100 may comprise one or more storage devices 130 forstoring data, the storage devices 130 comprising a shared storage of thestorage system 100.

A server system 110 may be general-purpose computers configured toexecute applications over a variety of operating systems, including theUNIX® and Microsoft Windows® operating systems. Server systems generallyutilize file-based access protocols when accessing information (in theform of files and directories) over a NAS-based network. Therefore, eachserver 110 may request the services of the storage system 100 by issuingfile access protocol messages (in the form of packets) to the storagesystem over the network 167. For example, a server running the Windowsoperating system may communicate with the storage system 100 using theCommon Internet File System (CIFS) protocol. On the other hand, a serverrunning the UNIX operating system may communicate with themulti-protocol storage system using the Network File System (NFS)protocol over TCP/IP. It will be apparent to those skilled in the artthat other servers running other types of operating systems may alsocommunicate with the integrated multi-protocol storage system usingother file access protocols.

A server system 110 may comprise a computer system that may execute acontent manager engine 112 for performing embodiments described herein.The content manager engine 112 may utilize data services of the storagesystem 100 to access, store, and manage data in the storage devices 130,such as document files 132 and a content database 135. The contentmanager engine 112 may submit access requests for accessing particularstorage objects on the storage devices, such as the document files 132and the content database 135 and the storage system may perform thereceived requests on the storage objects.

A storage system 100 may be coupled to a server system 110 over anetwork 167 such as a local area network (LAN), an Ethernet subnet, aPCI or PCIe subnet, a switched PCIe subnet, a wide area network (WAN), ametropolitan area network (MAN), the Internet, or the like. Tofacilitate access to the disks 130, a storage operating system of thestorage system implements a file system of a virtualization system that“virtualizes” the storage space provided by disks 130. The file systemorganizes the information as a hierarchical structure of named directoryand file objects (hereinafter “directories” and “files”) on the disks.Each “on-disk” file may be implemented as set of disk blocks configuredto store information, such as data, whereas the directory may beimplemented as a specially formatted file in which names and links toother files and directories are stored.

In the illustrative embodiment, the storage operating system maycomprise Data ONTAP® storage operating system, available from NetApp,Inc. of Sunnyvale, Calif., which implements a Write Anywhere File Layout(WAFL®) file system. However, it is expressly contemplated that anyappropriate storage operating system, including a write in-place filesystem, may be enhanced for use in accordance with embodiments describedherein. As such, where the term “WAFL” is employed, it should be takenbroadly to refer to any storage operating system that is otherwiseadaptable to the teachings of this embodiment.

As used herein, the term “storage operating system” generally refers tothe computer-executable code operable on a computer that manages dataaccess and may, in the case of a multi-protocol storage system,implement data access semantics, such as the Data ONTAP® storageoperating system, which is implemented as a microkernel. The storageoperating system can also be implemented as an application programoperating over a general-purpose operating system, such as UNIX® orWindows®, or as a general-purpose operating system with configurablefunctionality, which is configured for storage applications as describedherein.

Interaction between the server systems 110 and the storage system(s) 100can enable the provision of storage services. That is, the serversystems 110 may request the services of the storage system(s) 100 (bysubmitting read/write access requests), and the storage system(s) 100may respond to read/write access requests of the server systems 110 byreceiving or transmitting data to the server systems 110 over thenetwork 167 (e.g., by exchanging data packets through a connection overthe network 167).

Communications between a storage system 100 and any of server systems110 are typically embodied as packets sent over the computer network167. A server system 110 may send an access request (a read/write accessrequest) to the storage system 100 for accessing particular data storedon the storage system. The server system 110 may request the services ofthe storage system 100 by issuing storage-access protocol messagesformatted in accordance with a conventional storage-access protocol foraccessing storage devices (such as CIFS, NFS, etc.). Access requests(e.g., read/write access requests) may be implemented by issuing packetsusing file-based access protocols—such as the Common Internet FileSystem (CIFS) protocol or Network File System (NFS) protocol—over theTransmission Control Protocol/Internet Protocol (TCP/IP) when accessingdata in the form of files and directories. Alternatively, the serversystem 110 may issue access requests by issuing packets usingblock-based access protocols—such as the Fibre Channel Protocol (FCP),or Internet Small Computer System Interface (iSCSI) Storage Area Network(SAN) access—when accessing data in the form of blocks.

A storage device 130 may comprise writable storage device media such asdisk devices, video tape, optical devices, DVD, magnetic tape, flashmemory, Magnetic Random Access Memory (MRAM), Phase Change RAM (PRAM),or any other similar media adapted to store information (including dataand parity information). As known in the art, a storage device 130 maycomprise storage objects comprising, for example, one or more storagevolumes, where each volume has a file system implemented on the volume.A file system implemented on the storage devices 130 may providemultiple directories in a single volume, each directory containing zeroor more filenames. A file system provides a representation of how data(files) are organized on a volume where data (files) are represented asfilenames that are organized into one or more directories. Examples ofcommon file systems include New Technology File System (NTFS), FileAllocation Table (FAT), Hierarchical File System (HFS), UniversalStorage Device Format (UDF), UNIX® file system, and the like.

In some embodiments, the storage devices 130 of a storage system 100store a plurality of documents 132 comprising a plurality of differentdocument types, and a content database 135 comprising a plurality ofcontent entries. In an alternative embodiment, the documents 132 and thecontent database 135 may be stored locally on a server system 110 and/orclient system 160.

The documents 132 may comprise computer files produced by a wide varietyof different types of document applications, such as a wordprocessor/application, spreadsheet application, presentationapplication, image application, etc. Currently, there are also manydifferent types of formats for each type of document application. Forexample, the different types of formats for a word application includeMicrosoft® Word® (DOC), Corel® WordPerfect® (WPD), AbiSource® Abiword®(ABW), etc. As such, the documents 132 may comprise a plurality ofdifferent document types that are in a plurality of different types offormats and compatible with a plurality of different types ofapplications. This may be problematic when attempting to access thecontent in the different document types on the storage system.Typically, in order to access the content of different document types,each application corresponding to each document type would need to beinstalled and available for accessing the content.

As used herein, a document type of a document is determined by theformat type of the document. The document type of a document may bedetermined by the format type implemented by the application thatproduces the document. As known in the art, a file/document is not anexecutable file, but rather contains data for use by the correspondingapplication. As known in the art, a file/document is organized andstored in a file system of the storage operating system.

As used herein, an “original” document comprises a document produced bya document application, the original document containing content as wellas metadata and formatting produced by the document application. In someembodiments, the content manager engine 112 extracts content of originaldocuments by removing the metadata and formatting of the originaldocuments. As used herein, a “deconstructed” document comprises adocument produced by the content manager engine 112, the deconstructeddocument containing only the content of an original document. As such, adeconstructed document comprises a deconstructed version of an originaldocument without the metadata or formatting of the original document.

In some embodiments, one or more storage devices 130 of a storage system100 store a content database 135 comprising a plurality of contententries. The content database 135 may comprise a collection of data orinformation organized for rapid search and retrieval by a computersystem, for example, using structured query language (SQL), etc. Thecontent database 135 may be structured to provide storage, retrieval,modification, and/or deletion of data in the content entries. Data ofthe content entries may be retrieved through queries. For example,keywords and sorting commands may be used to search, organize, andselect data of the content entries. Some examples of different types ofdatabases that may be implemented herein include document-orienteddatabase, data driven database, embedded database, federated database,cloud database, data warehouse database, relational database,transactional database, distributed database, etc. In other embodiments,other types of databases may be implemented herein. In some embodiments,the content database 135 and its content entries are separate from thefile system, wherein the content database 135 and the content entriesare organized and stored outside the file system and without use of thefile system.

As shown in FIG. 1, the storage system environment 90 may also include aplurality of client systems 160 connected with each server 110 through anetwork (not shown), such as network 167. In some embodiments, a user ofa client system may submit, to the content manager engine 112, one ormore selections/parameters for specifying an issue/problem or a query,for example, regarding computer systems, such as computer hardwareand/or software, storage system hardware and/or software, etc. The terms“user” and “client system” may sometimes be used interchangeably herein.The content manager engine 112 may provide a user interface fordisplaying the one or more user-selectable selections/parameters and forreceiving the selections from the client system/user. In theseembodiments, the content manager engine 112 may use the content database135 to provide a solution document based on the one or moreselections/parameters received from the client system/user.

In some embodiments, each client system 160 may execute a web browser162 for interfacing/interacting with a server 110 via the network. Theweb browser 162 on the client system 160 may interface/interact thecontent manager engine 112 on the server 110 for performing embodimentsdescribed herein. In these embodiments, the web browser 162 may be usedto receive and display the user interface from the content managerengine 112, receive one or more selections from the user, and submit theone or more selections/parameters to the content manager engine 112. Thecontent manager engine 112 may send the solution document to the clientsystem 160 via a file download, which may be stored to a local storagedevice of the client system 160. In other embodiments, the contentmanager engine 112 may send the solution document to the client system160 via a web-based format (such as HyperText Markup Language (HTML),EXtensible Markup Language (XML), etc.) which may be displayed on theweb browser 162 without requiring a file download. In these embodiments,a client system would only require a web browser 162 to access thefunctions of the content manager engine 112, without having to locallyinstall and execute the content manager engine 112 on the client system.

FIG. 2 is a schematic block diagram of an exemplary server system 110that may be employed in the storage system environment 90 of FIG. 1. Theexemplary server system 110 may comprise processor(s) 226, memory 228, alocal storage 292, a network adapter 295, an output component 297, andan input component 298 coupled by a bus 246.

The processors 226 are the central processing units (CPUs) of the serversystem 110 and, thus, control the overall operation of the server system110. Processors 226 may include one or more programmable general-purposeor special-purpose microprocessors, digital signal processors (DSPs),programmable controllers, application specific integrated circuits(ASICs), programmable logic devices (PLDs), or the like, or acombination of such devices.

The network adapter 295 may comprise mechanical, electrical, andsignaling circuitry needed to connect the server system 110 to thenetwork and to receive and transmit data over the network. The networkadapter 295 comprises a plurality of ports adapted to couple the serversystem 110 to one or more other computer systems (such as servers 110 orstorage systems 100) over point-to-point links, wide area networks,virtual private networks implemented over a public network (Internet) ora shared local area network. The network adapter 295 thus may comprisethe mechanical, electrical and signaling circuitry needed to connect theserver system 110 to the network. The network adapter 295 may comprise anetwork port controller (e.g., Ethernet cards), specialized networkadapters, or any other physical device that controls the receiving andtransmitting of data over a network.

The output component 297 may be of any type generally used by a computersystem to provide information to an end user (e.g., administrator,etc.). For example, the output component 297 may include a monitor, anaudio speaker, or an alphanumeric display. Similarly, the inputcomponent 298 may be of any type that allows an end user to provideinput (e.g., user selections) into a computer system. For example, theinput component 298 may be a keyboard, a mouse, or a speech recognitionsystem. In some embodiments, the output component 297 comprises amonitor or television that displays a user interface provided by thecontent manager engine 112. In some embodiments, the input component 298may be used by a user (e.g., administrator) for interacting with andproviding input to the user interface of the content manager engine 112.

Memory 228 comprises storage locations that are addressable by theprocessor and adapters, as well as other devices for storing softwareprogram code such as the software described herein. The processors andadapters may, in turn, comprise processing elements and/or logiccircuitry configured to execute the software code. Memory 228 can be arandom access memory (RAM), a read-only memory (ROM), or the like, or acombination of such devices. It will be apparent to those skilled in theart that other processing and memory means, including various computerreadable media, may be used for storing and executing programinstructions pertaining to the invention described herein.

Memory 228 is for storing software program instructions and datastructures, such as an operating system and a content manager module112. The operating system may be, for example, UNIX®, Windows NT®,Linux®, or any other operating system. In some embodiments, the variousmodules may configure hardware components of the server system toproduce a content manager engine 112 for performing embodimentsdescribed herein. The server memory 228 may also store various datastructures (DSs), such as a document mapping DS 115, a group mapping DS120, and a solution mapping DS 125, that are used by the content managerengine 112 for performing embodiments described herein.

Local storage 292 may comprise a local writable storage device, such asdisk devices, video tape, optical devices, DVD, magnetic tape, flashmemory, Magnetic Random Access Memory (MRAM), Phase Change RAM (PRAM),or any other similar media adapted to store information (including dataand parity information). Local storage 292 is a storage device thatstores data needed or produced by the content manager module 112 whenperforming the embodiments described herein. For example, such data mayinclude the document mapping DS 115, the group mapping DS 120, and thesolution mapping DS 125. The server system 110 loads data stored on thelocal storage 292 into memory 228 from which they are accessed byprocessors 226.

In some embodiments, the content manager engine 112 is configured to usethe document mapping DS 115, group mapping DS 120, and solution mappingDS 125 for performing various functions described herein. For example,such functions may include managing the content database 135, extractingcontent from documents and storing the extracted content to the contentdatabase 135, merging two documents of different types into a singledocument, and producing solution documents for clients/users. Thecontent database 135 may also provide a user interface for facilitatingthe various functions.

Note that a client system 160 may also comprise components similar tothe components of the server 110 illustrated in FIG. 2. For example, aclient system 160 may comprise one or more processor(s) 226, memory 228,a local storage 292, a network adapter 295, an output component 297, andan input component 298 coupled by a bus 246. The components of theclient system 160 may be used to interact/interface with the contentmanager engine 112 in accordance with embodiments herein. For example,the components of the client system 160 may be used to execute the webbrowser 162 to interact/interface with the content manager engine 112.

II. Content Database for Storing Extracted Content

This section discusses systems and methods for a content databasestoring extracted content. The content manager engine 112 may beconfigured to perform various functions in this regard. In someembodiments, the content manager engine 112 may be configured to processdocuments of different document types to produce content entries in thecontent database 135. The content manager engine 112 may be furtherconfigured to reproduce a selected document using the content database135, to directly modify content entries in the content database 135, andmerge two documents of different types into a single document.

A. Extracting Content of Documents and Storing to Content Database

The content manager engine 112 may be configured to process documents ofdifferent document types by extracting content of the documents andstoring the content to the content database 135 as content entries. Thecontent manager engine 112 may provide a user interface to facilitatethe processing of documents, the user interface for displaying screenpages and receiving input from a user (such as an administrator).

FIG. 3 shows a flowchart of a method 300 for processing a document, inaccordance with some embodiments. The method 300 is described inrelation to FIGS. 4-5 which conceptually illustrate the steps of themethod 300. In some embodiments, the method 300 is performed by thecontent manager engine 112. The order and number of steps of the method300 are for illustrative purposes only to demonstrate various operationsthat may be performed by the content manager engine 112. In otherembodiments, however, a different order and/or number of steps may beused.

The method 300 begins by receiving (at 305), through the user interface,a user selection of a document 132 for processing and retrieves theselected document (e.g., from a storage system 110 through use of a filesystem of the storage operating system). The selected document comprisesan original document produced by a document application. As such, theselected document contains content as well as metadata and formattingproduced by the document application.

The method 300 then extracts (at 310) content of the selected document.The method may do so by removing the original metadata of the selecteddocument. In general, the original metadata may comprise metadata thatdescribes the selected document, but does not comprise content of theselected document. For example, the removed original metadata maycomprise a filename, a timestamp, and/or other file attributes. In otherembodiments, the original metadata includes other file metadata producedby the document application.

The method may also remove (at 310) the original formatting of theselected document. In general, original formatting is typicallyproprietary in nature and may comprise reserved metadata that isspecific to a proprietary document application for allowing the selecteddocument to be accessible to the document application. Examples ofdifferent proprietary file formats include Microsoft® Word® (DOC),Corel® WordPerfect® (WPD), Adobe® Reader® (PDF), Microsoft® PowerPoint®(PPT), etc. Original formatting may also be produced by a proprietaryoperating system to allow for the storing and reading of the documentfrom storage devices. For example, a propriety file system of the DataONTAP®, UNIX□ or Windows□ operating systems may produce their own fileformatting in documents to allow its file system to read and write thedocuments to storage devices.

The extracted content may comprise the remaining data of the selecteddocument after the metadata and formatting are removed (at step 310).The extracted content may comprise various types of content, such astext and images. Extracted content for text may comprise text at acharacter level. Images may comprise an “internal” format that comprisesan encoding type of the image, such as Joint Photographic Experts Group(JPEG), Windows bitmap (BMP), Portable Network Graphics (PNG), GraphicsInterchange Format (GIF), etc. In some embodiments, the internalencoding formatting of image content is retained, while the remaining“external” formatting relating to the image content is removed.

Then method then divides (at 315) the extracted content into one or morecontent fragments. A content fragment may comprise a portion of theextracted content, the portion comprising a predetermined amount of data(storage data size). In cases where the data size of the extractedcontent is equal to or less than the predetermined amount of data, theextracted content comprises a single content fragment and may bereferred to herein as simply the extracted content. In most cases,however, the data size of the extracted content is greater than thepredetermined amount of data, and the extracted content is divided intoa plurality of content fragments.

The method then stores (at 320) each content fragment in a content entryof the content database 135. As such, the content entries of the contentdatabase 135 will store only pure extracted content from the documents,without any metadata or formatting. Each content entry will have anassociated storage location in the content database 135. For example,the associated storage location may comprise an address in the contentdatabase 135 specified by coordinate positions (such as column and rowcoordinates). In other embodiments, the storage locations of the contententries are specified using other methods.

FIG. 4 shows a conceptual illustration of the steps for processing aselected document. As shown in FIG. 4, a selected document 405 isretrieved and its content is extracted to produce extracted content 410.The extracted content 410 is divided into one or more content fragments415, such as a first content fragment and a second content fragment.Each content fragment 415 is stored as a content entry 420 in thecontent database 135. For example, the method 300 may store the firstcontent fragment as a first entry and a second content fragment as asecond entry in the content database 135. The first entry may be storedat a first storage location and the second entry may be stored at asecond storage location in the content database 135. In the example ofFIG. 4, the storage locations may be specified by column and rowcoordinates. In other embodiments, however, the storage locations may bespecified in a different manner.

The method then produces (at 325) a document mapping associated with theselected document. The document mapping may comprise a plurality of datafields, including data fields for a document identifier, storagelocations for the one or more content entries in the content database,and various mapping attributes. The document mapping may be producedusing input received from a user through the user interface. Forexample, the method 300 may receive the document identifier and/or thevarious attributes from the user. For example, the document identifiermay comprise the original document filename, or another identifier asspecified by the user.

The various attributes included in a document mapping may comprise, forexample, a brief description, a version number, and/or timestamp. Thebrief description may describe the content of the selected document. Forexample, the brief description may specify the topic of the contentand/or any topics related to the content. For example, the briefdescription may specify any storage system services, products, and/ortechnologies that are the topic and/or related topic of the content. Thebrief description may be received from a user through the userinterface. The brief description may be used by administrators fordetermining future use of the document mapping. For example, the briefdescription may be used to determine whether the document mapping shouldbe included in a group mapping or a solution mapping (as discussedbelow). The version number may comprise the version number of thedocument mapping. The version number may be automatically incremented bythe method 300 when a document mapping or its content entries areupdated. The timestamp may comprise the time and day the current versionof the document mapping was produced. In other embodiments, the documentmapping may include other types of attributes.

In the document mapping, the storage locations for the one or morecontent entries in the content database 135 comprise the storagelocations of the one or more content entries that stores the one or morecontent fragments in step 320. As such, the document mapping may specifya document identifier that maps to one or more content entries in thecontent database. The document mapping may be used later to produce anew document that comprises a deconstructed version of the selecteddocument, without the metadata or formatting of the selected document(as discussed below). In some embodiments, the document mapping alsospecifies an ordering of the content entries in the content database135. When later producing the new document based on the documentmapping, the ordering specifies the order/sequence in which the contentfragments stored in the content entries are inserted into the newdocument. As such, the document mapping also specifies an ordering ofthe content fragments in the new document.

The method then stores (at 330) the document mapping to a documentmapping DS 115. FIG. 5 shows a conceptual diagram of an exemplarydocument mapping DS 115. As shown in FIG. 5, the document mapping DS 115comprises a plurality of document mappings 501. Each document mapping501 may comprise a plurality of data fields, including data fields for adocument identifier 505, storage locations 510 for the one or morecontent entries in the content database 510, and various mappingattributes 515. The document identifier 505 identifies the associateddocument, but also comprises an identifier for the document mapping 501.The document mappings 501 may be searched using any of the data fields.For example, the content manager engine 112 may provide a user interfaceto provide a keyword search of the document identifier 505 or themapping attributes 515.

The method 300 then ends. The method 300 may be repeated for a pluralityof selected documents. As such, a plurality of documents may beprocessed to populate the content entries of the content database 135.Since the metadata and the formatting of the documents are removed, theplurality of processed documents may comprise a plurality of differentdocument types in any format. As such, the content database 135 providesa repository of extracted/deconstructed content that is accessible tousers without requiring installation and use of the wide variety ofdocument applications that would otherwise be needed to access thedifferent document types. In the embodiments below, the content entriesof the content database 135 may be accessed to produce new documents,modify content entries, and documents of different document types.

B. Producing a New Document Using a Document Mapping

The content manager engine 112 may be configured to produce a newdocument based on a document mapping associated with an originalselected document. The new document comprises a deconstructed version ofthe original selected document, without the metadata or formatting ofthe original selected document. The new document may also be modified bythe user and saved as a document file to a file system. The contentmanager engine 112 may provide a user interface to facilitate theproducing, modifying, and saving of the new document, the user interfacefor displaying screen pages and receiving input from a user.

FIG. 6 shows a flowchart of a method 600 for producing a new documentusing a document mapping, in accordance with some embodiments. In someembodiments, the method 600 is performed by the content manager engine112. The order and number of steps of the method 600 are forillustrative purposes only to demonstrate various operations that may beperformed by the content manager engine 112. In other embodiments,however, a different order and/or number of steps may be used.

The method 600 begins by receiving (at 605), from a user through theuser interface, a document identifier for producing a new document.Based on the received document identifier, the method 600 then selectsand retrieves (at 610) a corresponding document mapping 501 from thedocument mapping DS 115, the corresponding document mapping having adocument identifier 505 that matches the received document identifier.

Based on the selected document mapping, the method 600 then produces (at615) the new document. The method may do so by reading the storagelocations 510 for the one or more content entries that are specified inthe selected document mapping and retrieving the content fragmentsstored in the one or more content entries from the content databaseusing the storage locations 510. The method 600 may theninsert/incorporate the retrieved content fragments into the newdocument. In some embodiments, the method 600 inserts the retrievedcontent fragments into the new document in an order specified by theselected document mapping. For example, as shown in FIG. 5, a documentmapping having a document identifier 505 “D2” specifies an ordering ofcontent fragments by specifying the ordering of content entries “E25,E35.” As such, a first content fragment (retrieved from a first contententry E25) is inserted in the beginning of the new document and in frontof a second content fragment (retrieved from a second content entry E35)in the new document.

The method 600 then displays (at 620) the content of the new document tothe user, for example through the user interface. The content of the newdocument comprises the one or more inserted content fragments. As anoptional step, the method 600 may receive (at 625) modifications of thecontent of the new document through the user interface. Modifications ofthe content of the new document may include the re-organizing, editing,deletion, and/or adding of content.

The method 600 then saves (at 630) the new document as a file documentto a storage device. The saved new document may or may not contain usermodifications. The new document may be stored as a document file to afile system of an operating system (such as a storage operating system).The method may receive a filename for the new document from a userthrough the user interface. In some embodiments, the new documentcomprises a “deconstructed” document comprising the content of anoriginal document without the metadata or formatting of the originaldocument. In some embodiments, the new document is formatted in aweb-based format (e.g., HTML, XML, etc.) for displaying the new documentthrough a web browser application. The method 600 then ends.

C. Merging Document of Different Types into a Single Document

The content manager engine 112 may be configured to merge two documentsof different types into a single document by extracting content of thetwo documents, storing the content to the content database 135 ascontent entries, and inserting the content into a new document. Thecontent manager engine 112 may provide a user interface to facilitatethe merging of documents, the user interface for displaying screen pagesand receiving input from a user.

FIG. 7 shows a flowchart of a method 700 for merging documents ofdifferent types, in accordance with some embodiments. In someembodiments, the method 700 is performed by the content manager engine112. The order and number of steps of the method 700 are forillustrative purposes only to demonstrate various operations that may beperformed by the content manager engine 112. In other embodiments,however, a different order and/or number of steps may be used.

The method 700 begins by receiving (at 705), through the user interface,a user selection of two or more documents 132 for merging and retrievesthe selected documents (e.g., from a storage system 110 through use of afile system of the storage operating system). The two or more selecteddocuments comprise documents of different format types. As such, eachselected document may comprise an original document produced by adifferent document application. For purposes of illustration, asdescribed herein, the selected documents comprise a first document in afirst format and a second document in a second format, the first andsecond formats being different. In other embodiments, the selecteddocuments comprise more than two different document types.

The method 700 then extracts (at 710) content of the selected documentsby removing the original metadata and formatting of the selecteddocuments. For example, the method 700 may extract a first content fromthe first document in the first format by removing metadata andformatting of the first format and extract a second content from thesecond document in the second format by removing metadata and formattingof the second format.

Then method then divides (at 715) the extracted content into contentfragments, each content fragment comprising a predetermined amount ofdata. For purposes of illustration, as described herein, the extractedcontent from each selected document comprises a single content fragmentand is referred to simply as the extracted content of the selecteddocument. In other embodiments, however, the extracted content from eachselected document comprises a plurality of content fragments.

The method 700 then stores (at 720) each content fragment in a contententry of the content database 135, each content entry having anassociated storage location in the content database 135. For example,the method 700 may store the first content as a first entry in thecontent database 135 and store the second content as a second entry inthe content database 135.

The method then produces (at 725) a document mapping associated with anew document used for containing the extracted content of the selecteddocuments. The document mapping may comprise a plurality of data fields,including data fields for a document identifier, storage locations forthe one or more content entries in the content database, and variousmapping attributes. For example, the document mapping may specify adocument identifier that maps to the first and second entries in thecontent database. The method then stores (at 730) the document mappingto a document mapping DS 115. The method 700 then ends.

Note that the document mapping produced at step 725 may be used later toproduce the new document using the method 600 of FIG. 6. For example,the method 600 may receive (at 605) a document identifier for producingthe new document. The method 600 then selects (at 610) a correspondingdocument mapping 501 from the document mapping DS 115, the correspondingdocument mapping having a document identifier 505 that matches thereceived document identifier. Based on the selected document mapping,the method 600 then produces (at 615) the new document. The method maydo so by reading the storage locations 510 for the first and secondcontent entries that are specified in the selected document mapping, andretrieving the first content from the first content entry and the secondcontent from the second content entry of the content database. Themethod 600 may then insert/incorporate the retrieved first and secondcontent into the new document. In some embodiments, the method 600inserts the retrieved content fragments into the new document in anorder specified by the selected document mapping. For example, thedocument mapping may specify that the first content be placed before thesecond content in the new document.

The method 600 then displays (at 620) the first and second content ofthe new document to the user, for example through the user interface andreceives (at 625) modifications of the first and second content of thenew document through the user interface. The method 600 then saves (at630) the new document to a file system. The new document comprises adeconstructed version of the plurality of selected documents, withoutthe metadata or formatting of the plurality of selected documents.

D. Directly Modifying Content Entries

In some embodiments, the content manager engine 112 may also beconfigured to allow direct modification of content fragments in contententries of the content database (referred to herein as modifying orupdating content entries). In these embodiments, modifying a contententry provides automatic updating/modifying of any document mapping,group mapping, or solution mapping using the modified content entry andany subsequent document produced using the modified content entry. Thismay drastically reduce the amount of modifications needed to beperformed on a multitude of mappings and/or documents that may beaffected by the modified content fragment. Rather, in these embodiments,only the content fragments would need to be modified in the contentdatabase, and all dependent mappings and/or documents would beautomatically updated accordingly. The content manager engine 112 mayprovide a user interface to facilitate the direct modification andstorage of content entries in the content database, the user interfacefor displaying screen pages and receiving input from a user.

FIG. 8 shows a flowchart of a method 800 for modifying content entriesin the content database 135, in accordance with some embodiments. Insome embodiments, the method 800 is performed by the content managerengine 112. The order and number of steps of the method 800 are forillustrative purposes only to demonstrate various operations that may beperformed by the content manager engine 112. In other embodiments,however, a different order and/or number of steps may be used.

The method 800 begins by receiving (at 805), from a user through theuser interface, a document identifier for a document mapping comprisingcontent entries to be modified. Based on the received documentidentifier, the method 800 then selects (at 810) a correspondingdocument mapping 501 from the document mapping DS 115, the correspondingdocument mapping having a document identifier 505 that matches thereceived document identifier.

The method 800 then retrieves (at 815), from the content database 135,one or more content fragments of one or more content entries specifiedby the selected document mapping. The method may do so by reading thestorage locations 510 for the one or more content entries specified inthe selected document mapping and retrieving the content fragmentsstored in the one or more content entries from the content databaseusing the storage locations 510.

The method 800 then displays (at 820) the one or more content fragmentsto the user, for example through the user interface. The method 800 thenreceives (at 825) modifications of one or more content fragments throughthe user interface. Modifications of a content fragment may include there-organizing, editing, deletion, and/or adding of the content fragment.The method 800 then saves (at 830) the one or more modified contentfragments to their corresponding content entries in the content database135. The method 800 then ends.

In some embodiments, a corresponding content entry for a contentfragment comprises the content entry that previously stored theun-modified content fragment. In these embodiments, a new content entryand/or a new storage location is not used for to store a modifiedcontent fragment. As such, each modified content fragment is stored tothe same content entry having the same storage location in the contentdatabase 135. Thus, any document mapping, group mapping, or solutionmapping that are dependent upon and use the modified content entry willbe automatically updated/modified since any such dependent mapping willstill specify and map to the same storage location, which now containsthe modified content fragment. As discussed below, group mappings andsolution mappings may be dependent on and use one or more documentmappings. Thus, group mappings and solution mappings that are dependenton an updated/modified document mapping are also automatically updated.

Modifying a content entry also provides automatic updating/modifying ofany subsequent document produced using a modified document mapping. Toproduce the document, the modified document mapping is used to retrieveone or more modified content fragments from one or more modified contententries, the modified content fragments being inserted into thedocument. As such, any subsequent document produced using a modifiedcontent entry will be automatic updated to include the modified contentfragments.

For example, assume that a first document mapping was already producedusing the method 300 of FIG. 3, the first document mapping specifying afirst document identifier that maps to first and second content entriesin the content database, the first and second content entries storingfirst and second content fragments, respectively. In accordance withmethod 800 of FIG. 8, the first content fragment of the first contententry is modified and the modified first content fragment is stored tothe same first content entry of the content database. The method 600 ofFIG. 6 may then be used to produce a modified document containing themodified first content fragment. For example, the method 600 may receive(at 605) the first document identifier and then retrieve the firstdocument mapping from the document mapping DS 115. Using the firstdocument mapping, the method 600 then produces (at 615) the modifieddocument by retrieving the modified first content fragment from thefirst content entry and the second content fragment from the secondcontent entry from the content database, and inserting the modifiedfirst content fragment and the second content fragment into the modifieddocument.

E. Group Mappings

In some embodiments, a group mapping may be produced to group two ormore related document mappings that are associated with two or morerelated documents. As such, the group mapping may specify a groupidentifier that maps to two or more related document mappings that areassociated with the two or more related documents. Related documentmappings and related documents may be determined by an administrator,for example, using the brief descriptions included in the mappingattributes 515 of the document mappings 501 (as shown in FIG. 5). Thegroup mapping may be used to represent a particular overall topic, suchas a particular storage system service, product, and/or technology. Therelated documents of a group mapping may each be relevant to the overalltopic of the group mapping and may each be needed to provide a completedescription of the overall topic. As such, it may be convenient to groupsuch related documents, and their corresponding related documentmappings, as a group mapping. A group mapping may be used to generate adocument using the two or more related document mappings. One or moregroup mappings may be stored to a group mapping DS 120.

FIG. 9 shows a conceptual diagram of an exemplary group mapping DS 120.As shown in FIG. 9, the group mapping DS 120 comprises a plurality ofgroup mappings 901. Each group mapping 901 may comprise a plurality ofdata fields, including data fields for a group identifier 905, two ormore related document identifiers 910, and various mapping attributes915. The group identifier 905 identifies the topic of the associatedgrouping, but also comprises an identifier for the group mapping 901.

Each related document identifier 910 comprises a document identifier 505for a document mapping 501 in the document mapping DS 115. In someembodiments, the group mapping 901 also specifies an ordering of contententries from the content database 135 by specifying an ordering of thetwo or more related document identifiers 910 of the of the two or morerelated document mappings 501. When later producing the new documentbased on the group mapping 901, the ordering specifies theorder/sequence in which the content fragments stored in the contententries are inserted into the new document. As such, the group mappingalso specifies an ordering of the content fragments in the new document.Different ordering of the content fragments in the new document may beimplemented, for example, to improve organization or understanding ofthe content, to emphasize more important content and less importantcontent, etc.

The various attributes 915 included in a group mapping 901 may comprise,for example, a brief description, a version number, and/or timestamp.For example, the brief description may describe the overall topicassociated with the group mapping 901 and the topic of the documentassociated with each document identifier 910 listed in the group mapping901. The brief description may be received from a user through the userinterface. The brief description may be used by administrators fordetermining future use of the group mapping. For example, the briefdescription may be used to determine whether the group mapping should beincluded in a solution mapping (as discussed below). The version numbermay comprise the version number of the group mapping. The timestamp maycomprise the time and day the current version of the group mapping wasproduced. In other embodiments, the group mapping may include othertypes of attributes. The group mapping may be produced using inputreceived from a user through the user interface. For example, the groupidentifier 905 and/or the various attributes may be received from auser.

The content manager engine 112 may be configured to produce a newdocument based on a group mapping 901 by using two or more related groupmappings 910. The new document may also be modified by the user andsaved as a document file to a file system. The content manager engine112 may provide a user interface to facilitate the producing, modifying,and saving of the new document, the user interface for displaying screenpages and receiving input from a user.

FIG. 10 shows a flowchart of a method 1000 for producing a new documentusing a group mapping, in accordance with some embodiments. In someembodiments, the method 1000 is performed by the content manager engine112. The order and number of steps of the method 1000 are forillustrative purposes only to demonstrate various operations that may beperformed by the content manager engine 112. In other embodiments,however, a different order and/or number of steps may be used. Somesteps of the method 1000 are similar to steps of the method 600 of FIG.6 and are not discussed in detail here.

The method 1000 begins by receiving (at 1005), from a user through theuser interface, a group identifier 905 for producing a new document.Based on the received group identifier, the method 1000 then selects andretrieves (at 1010) a corresponding group mapping 901 from the groupmapping DS 120, the corresponding group mapping having a groupidentifier 905 that matches the received group identifier.

Based on the selected group mapping 901, the method 1000 then produces(at 1015) the new document. The method may do so by reading the two ormore related document identifiers 910 specified in the selected groupmapping 901. For each related document identifier 910, the method 1000may retrieve a corresponding document mapping 501 from the documentmapping DS 115, read storage locations 510 for content entries specifiedin the document mapping 501, retrieve content fragments stored in thecontent entries from the content database, and insert/incorporate theretrieved content fragments into the new document (as discussed inrelation to method 600 of FIG. 6).

In some embodiments, the method 1000 inserts the retrieved contentfragments into the new document in an order specified by the selectedgroup mapping 901. In some embodiments, the group mapping 901 specifiesan ordering of content entries by specifying an ordering of the two ormore related document identifiers 910. The ordering specifies theorder/sequence in which the content fragments stored in the contententries are inserted into the new document. For example, as shown inFIG. 9, a group mapping having a group identifier 905 “G2” specifies anordering of content fragments of content entries by specifying theordering of related document identifiers 910 “D18, D29, D3.” As such,the content fragments of content entries specified by a first documentmapping corresponding to document identifier D18 is inserted at thebeginning of the new document, the content fragments of content entriesspecified by a second document mapping corresponding to documentidentifier D29 is inserted in the middle of the new document, and thecontent fragments of content entries specified by a third documentmapping corresponding to document identifier D3 is inserted at the endof the new document.

The method 1000 then displays (at 1020) the content of the new documentto the user, for example through the user interface. As an optionalstep, the method 1000 may receive (at 1025) modifications of the contentof the new document through the user interface. The method 1000 thensaves (at 1030) the new document as a file document to a storage device.The saved new document may or may not contain user modifications. Thenew document may be stored as a document file to a file system of anoperating system (such as a storage operating system). In someembodiments, the new document is formatted in a web-based format (e.g.,HTML, XML, etc.) for displaying the new document through a web browserapplication. The method 1000 then ends.

III. Producing Solution Documents Using Content Database

As discussed above, another issue with current storage systems is theinefficient manner used for providing solution documents forclients/users of the storage systems for any issues or queries regardingcomputer systems the clients/users may have. The solution document mayprovide a description of how to resolve the client's issue or query.Typically, to provide a solution document to the client, anadministrator or engineer is needed to interact with the client todetermine their issue or query, determine any storage system services,products, and/or technologies related to the issue or query, identifyany documents in the storage system describing these services, products,and/or technologies, modify any of the documents if any of thecorresponding services, products, and/or technologies has been recentlyupdated, and produce a solution document for the client that includesthe description of the related services, products, and/or technologies.Given that a large number of issues or queries may be received byclients, such a solution process for each issue or query maycollectively consume large amounts of time and computer and humanresources. As such, there is a need for a more efficient method forproviding solution documents for the clients/users.

In some embodiments, the content manager engine 112 may be configured toproduce a solution document using the content database 135 based on oneor more received user selections. In some embodiments, a solutiondocument may be provided for clients/users for any issues or queriesregarding computer systems, such as computer hardware and/or software,storage system hardware and/or software, etc. The solution document maycomprise a description of any storage system services, products, and/ortechnologies related to the client's issue or query, and may alsocontain any execution steps (such as installation steps, configuringsteps, etc.) needed to implement the related services, products, and/ortechnologies. The solution document may include various types ofcontent, such as text, images (e.g., illustrations, diagrams,flowcharts, etc.), presentation slides, etc.

A. Solution Mappings

In some embodiments, a solution mapping may be produced for mapping oneor more received user selections to one or more document mappings and/orone or more group mappings. The document and/or group mappings will thenmap to content entries having content relevant to the one or morereceived user selections and comprise a solution document that addressesthe user's issue or query. A plurality of solution mappings may beproduced to map a wide variety of different user selections anddifferent combinations of user selections to document and/or groupmappings.

The document and/or group mappings included in a particular solutionmapping may be determined by an administrator, for example, using thebrief descriptions included in the mapping attributes 515 of thedocument mappings 501 (as shown in FIG. 5) and the mapping attributes915 of the group mappings 901 (as shown in FIG. 9). The solutiondocument produced by a solution mapping may address a particularsituation encountered by the user, such as a particular issue or queryregarding a storage system service, product, and/or technology. One ormore solution mappings may be stored to a solution mapping DS 125.

FIG. 11 shows a conceptual diagram of an exemplary solution mapping DS125. As shown in FIG. 11, the solution mapping DS 125 comprises aplurality of solution mappings 1101. Each solution mapping 1101 maycomprise a plurality of data fields, including data fields forselections/parameters 1105, mapping identifiers 1110, and variousmapping attributes 1115. The selections/parameters 1105 may specify anycombination of one or more received user selections/parameters forspecifying an issue/problem or a query. In other embodiments, theselections/parameters 1105 may also specify one or more receivedautomated selections/parameters for specifying the issue or query. Themapping identifiers 1110 specify one or more document identifiers 505for one or more document mappings 501. In other embodiments, the mappingidentifiers 1110 may also specify one or more group identifiers 905 forone or more group mappings 901.

In some embodiments, the solution mapping 1101 also specifies anordering of content entries from the content database 135 by specifyingan ordering of the mapping identifiers 1110 of the of the documentand/or group mappings. When later producing the solution document basedon the solution mapping 1101, the ordering specifies the order/sequencein which the content fragments stored in the content entries areinserted into the solution document. As such, the solution mapping alsospecifies an ordering of the content fragments in the solution document.Different ordering of the content fragments in the solution document maybe implemented, for example, to improve organization or understanding ofthe content, to emphasize more important content and less importantcontent, etc.

The various attributes 1115 included in a solution mapping 1101 maycomprise, for example, a brief description, a version number, and/ortimestamp. The brief description may describe the general situation andissue or query described by the user and a general description of thesolution document for addressing such. The version number may comprisethe version number of solution mapping. The timestamp may comprise thetime and day the current version of the solution mapping was produced.In other embodiments, the solution mapping may include other types ofattributes.

B. Producing a Solution Document Using a Solution Mapping

The content manager engine 112 may be configured to produce a solutiondocument based on one or more user selections using the content database135. The solution document may also be modified by the user and saved asa document file to a file system. The content manager engine 112 mayprovide a user interface to facilitate the producing, modifying, andsaving of the solution document, the user interface for displayingscreen pages and receiving input from a user.

FIG. 12 shows a flowchart of a method 1200 for producing a solutiondocument using the content database, in accordance with someembodiments. In some embodiments, the method 1200 is performed by thecontent manager engine 112. The order and number of steps of the method1200 are for illustrative purposes only to demonstrate variousoperations that may be performed by the content manager engine 112. Inother embodiments, however, a different order and/or number of steps maybe used. Some steps of the method 1200 are similar to steps of themethod 600 of FIG. 6 and are not discussed in detail here.

The method 1200 begins by receiving (at 1205), from a user of a clientsystem through the user interface, one or more selections/parameters forspecifying an issue/problem or a query regarding computer hardwareand/or software, such as storage system hardware and/or software. Thecontent manager engine 112 may provide a user interface for displayingone or more user-selectable selections/parameters and for receiving theselections from the client/user. For example, the user may interact witha client system 160 that executes a web browser 162 forinterfacing/interacting, via a network, with the content manager engine112 executing on a server 110. In these embodiments, the web browser 162may be used to receive and display the user interface from the contentmanager engine 112, receive one or more selections from the user, andsubmit the one or more selections/parameters to the content managerengine 112.

As an optional step, the method 1200 then produces (at 1207) one or moreautomated selections/parameters based on the one or more received userselections. The content manager engine 112 may be configured todetermine additional selections/parameters for specifying an issue orquery by using the received user selections. In these embodiments, theuser interface of the content manager engine 112 may display simplified“higher-level” options/parameters to the user and automaticallydetermine detailed “lower-level” options/parameters. As such, the usermay need to only select a few higher-level options while the method 1200automatically fills in and produces one or more lower-level options.

Based on the one or more received user and/or automated selections, themethod 1200 then selects and retrieves (at 1210) a correspondingsolution mapping 1101 from the solution mapping DS 125. In otherembodiments, the method 1200 selects the corresponding solution mapping1101 based on one or more received user selections and/or one or moreautomated selections. The corresponding solution mapping 1101 comprisesa combination of selections 1105 that matches the one or more receiveduser selections. In other embodiments, the corresponding solutionmapping 1101 comprises a combination of selections 1105 that matches theone or more received user selections and the one or more automatedselections. The selected solution mapping 1101 comprises a data fieldfor mapping identifiers 1110 that specifies one or more documentidentifiers 505 for one or more document mappings 501 in the documentmapping DS 115 and/or one or more group identifiers 905 for one or moregroup mappings 901 in the group mapping DS 120.

Based on the selected solution mapping 1101, the method 1200 thenproduces (at 1215) the solution document. The method may do so byreading the one or more document identifiers 505 and/or one or moregroup identifiers 905 specified in the selected solution mapping 1101.For each document identifier 505 specified in the selected solutionmapping 1101, the method 1200 may retrieve a corresponding documentmapping 501 from the document mapping DS 115, read storage locations 510for content entries specified in the document mapping 501, retrievecontent fragments stored in the content entries from the contentdatabase, and insert/incorporate the retrieved content fragments intothe solution document (as discussed in relation to method 600 of FIG.6). For each group identifier 905 specified in the selected solutionmapping 1101, the method 1200 may retrieve a corresponding group mapping901 from the group mapping DS 120. For each document identifier 505specified in the group mapping 901, the method 1200 may retrieve acorresponding document mapping 501 from the document mapping DS 115,read storage locations 510 for content entries specified in the documentmapping 501, retrieve content fragments stored in the content entriesfrom the content database, and insert/incorporate the retrieved contentfragments into the solution document.

In some embodiments, the method 1200 inserts the retrieved contentfragments into the solution document in an order specified by theselected solution mapping 1101. In some embodiments, the solutionmapping 1101 specifies an ordering of content entries by specifying anordering of the one or more document and/or group identifiers for one ormore document and/or group mappings. The ordering specifies theorder/sequence in which the content fragments stored in the contententries are inserted into the solution document.

The method 1200 then displays (at 1220) the content of the solutiondocument to the user, for example through the user interface. In someembodiments, the method 1200 may do so by sending the solution documentto the client system 160, the solution document formatted in a web-basedformat (such as HyperText Markup Language (HTML), EXtensible MarkupLanguage (XML), etc.) for displaying on a web browser 162 executing onthe client system. In these embodiments, a client system would onlyrequire a web browser 162 to access the functions of the content managerengine 112 and receive solution documents, without having to locallyinstall and execute the content manager engine 112 on the client system,and without requiring a file download of the solution document.

As an optional step, the method 1200 may receive (at 1225) modificationsof the content of the solution document through the user interface. Themethod 1200 then saves (at 1230) the solution document as a filedocument to a storage device, such as a remote or local storage device.The saved solution document may or may not contain user modifications.In some embodiments, the solution document may be stored as a documentfile to a file system of a storage system. As such, the client systemmay access and modify the solution document via a network connectionwith the content manager engine 112 using only the web browser, thesolution document being stored to a remote storage system. In otherembodiments, the solution document may be downloaded to the clientsystem and stored as a document file to a local storage device. Themethod 1200 then ends.

C. Example of Producing a Solution Document Using a Solution Mapping

FIG. 13 is a diagram that conceptually illustrates exemplary steps ofthe method 1200 of FIG. 12. As shown in FIG. 13, a set of one or moreuser and/or automated selections 1305 are received from a user orproduced by the method 1200. The set of selections 1305 are used toselect and retrieve a corresponding solution mapping 1310 from thesolution mapping DS 125. The corresponding solution mapping 1310comprises a combination of selections 1105 that matches the set ofselections 1305. In the example of FIG. 13, the set of selections 1305comprises selections “S1, S2, S3.”

The corresponding solution mapping 1310 specifies one or more documentidentifiers 505 for one or more document mappings 501 in the documentmapping DS 115 and/or one or more group identifiers 905 for one or moregroup mappings 901 in the group mapping DS 120. As shown in the exampleof FIG. 11, the solution mapping 1310 corresponding to selections “S1,S2, S3” specifies a document identifier “D15” for document mapping “D15”1315 and a group identifier “G8” for group mapping “G8” 1320. Forexample, the document mapping “D15” 1315 may map to a content entry“E27” storing a content fragment “E27” 1335 and a content entry “E28”storing a content fragment “E28” 1340. For example, the group mapping“G8” 1320 may specify document identifier “D32” for document mapping“D32” 1325 and document identifier “D61” for document mapping “D61”1330. For example, the document mapping “D32” 1325 may map to a contententry “E13” storing content fragment “E13” 1345. For example, thedocument mapping “D61” 1330 may map to a content entry “E88” storing acontent fragment “E88” 1350 and a content entry “E89” storing a contentfragment “E89” 1355.

The method 1200 then produces a solution document 1375 by retrievingcontent fragments from the content database 135 from each mapped contententry of each document and/or group mapping specified in thecorresponding solution mapping 1310. The method 1200 then inserts theretrieved content fragments into the solution document 1375 based on anordering specified in the corresponding solution mapping 1310. In theexample of FIG. 13, the corresponding solution mapping 1310 specifies anordering of content fragments mapped from document mapping “D15” 1315followed by content fragments mapped from group mapping “G8” 1320. Assuch, the method 1200 incorporates the content fragments into thesolution document 1375 in an order from beginning to end: contentfragment “E27” 1335, content fragment “E28” 1340, content fragment “E13”1345, content fragment “E88” 1350, and content fragment “E89” 1355.

D. Directly Modifying Content Entries for Solution Documents

As discussed above, the content manager engine 112 may be configured toallow direct modification of content fragments in content entries of thecontent database 135. This may be especially beneficial for producingsolution documents. Solution documents rely on a vast amount of contentdescribing a wide range of services, products, and technologies that areconstantly being updated. Typically, any update of a service, product,or technology would potentially affect a large number of future solutiondocuments and would thus require modifying each individual document thatcontains a description regarding the changed service, product, ortechnology. This update process may consume large amounts of time andcomputer and human resources.

By allowing direct modification of content entries in the contentdatabase 135 (e.g., using the method 800 of FIG. 8), only the contententries containing the updated content fragments would need to bemodified and any affected solution documents would be automaticallyupdated when produced. This is due to the fact that modifying a contententry provides automatic updating/modifying of any solution mappingusing the modified content entry and any subsequent solution documentproduced using the modified content entry.

This may drastically reduce the amount of modifications needed to updatesolution documents and thus provide more responsive support to users andclient systems. In addition, this reduces the time and cost of producingclient solutions by re-using the same content and enables high qualityand repeatable solutions to be created with less resource and less time.This also reduces variation of designs, thus leading to more consistentquality of solution deployments, increased deployment efficiency, andimproved supportability after deployment.

Various Embodiments

Some embodiments may be conveniently implemented using a conventionalgeneral purpose or a specialized digital computer or microprocessorprogrammed according to the teachings herein, as will be apparent tothose skilled in the computer art. Some embodiments may be implementedby a general purpose computer programmed to perform method or processsteps described herein. Such programming may produce a new machine orspecial purpose computer for performing particular method or processsteps and functions (described herein) pursuant to instructions fromprogram software. Appropriate software coding may be prepared byprogrammers based on the teachings herein, as will be apparent to thoseskilled in the software art. Some embodiments may also be implemented bythe preparation of application-specific integrated circuits or byinterconnecting an appropriate network of conventional componentcircuits, as will be readily apparent to those skilled in the art. Thoseof skill in the art would understand that information may be representedusing any of a variety of different technologies and techniques.

Some embodiments include a computer program product comprising acomputer readable medium (media) having instructions stored thereon/inand, when executed (e.g., by a processor), perform methods, techniques,or embodiments described herein, the computer readable medium comprisingsets of instructions for performing various steps of the methods,techniques, or embodiments described herein. The computer readablemedium may comprise a non-transitory computer readable medium. Thecomputer readable medium may comprise a storage medium havinginstructions stored thereon/in which may be used to control, or cause, acomputer to perform any of the processes of an embodiment. The storagemedium may include, without limitation, any type of disk includingfloppy disks, mini disks (MDs), optical disks, DVDs, CD-ROMs,micro-drives, and magneto-optical disks, ROMs, RAMs, EPROMs, EEPROMs,DRAMs, VRAMs, flash memory devices (including flash cards), magnetic oroptical cards, nanosystems (including molecular memory ICs), RAIDdevices, remote data storage/archive/warehousing, or any other type ofmedia or device suitable for storing instructions and/or datathereon/in.

Stored on any one of the computer readable medium (media), someembodiments include software instructions for controlling both thehardware of the general purpose or specialized computer ormicroprocessor, and for enabling the computer or microprocessor tointeract with a human user and/or other mechanism using the results ofan embodiment. Such software may include without limitation devicedrivers, operating systems, and user applications. Ultimately, suchcomputer readable media further includes software instructions forperforming embodiments described herein. Included in the programming(software) of the general-purpose/specialized computer or microprocessorare software modules for implementing some embodiments.

Those of skill would further appreciate that the various illustrativelogical blocks, circuits, modules, algorithms, techniques, processes, ormethod steps of embodiments described herein may be implemented ascomputer electronic hardware, computer software, or combinations ofboth. To illustrate this interchangeability of hardware and software,various illustrative components, blocks, modules, circuits, and stepshave been described herein generally in terms of their functionality.Whether such functionality is implemented as hardware or softwaredepends upon the particular application and design constraints imposedon the overall system. Skilled artisans may implement the describedfunctionality in varying ways for each particular application, but suchimplementation decisions should not be interpreted as causing adeparture from the embodiments described herein.

The various illustrative logical blocks, modules, and circuits describedin connection with the embodiments disclosed herein may be implementedor performed with a general-purpose processor, a digital signalprocessor (DSP), an application-specific integrated circuit (ASIC), afield programmable gate array (FPGA) or other programmable logic device,discrete gate or transistor logic, discrete hardware components, or anycombination thereof designed to perform the functions described herein.A general-purpose processor may be a microprocessor, but in thealternative, the processor may be any conventional processor,controller, microcontroller, or state machine. A processor may also beimplemented as a combination of computing devices, e.g., a combinationof a DSP and a microprocessor, a plurality of microprocessors, one ormore microprocessors in conjunction with a DSP core, or any other suchconfiguration.

The modules, algorithm, techniques, processes, or methods described inconnection with embodiments disclosed herein may be embodied directly incomputer hardware configured to perform the embodiments disclosedherein, in software executed by a processor, or in a combination of thetwo. In some embodiments, any software application, program, tool,module, or layer described herein may comprise an engine comprisinghardware, software, or a combination of the two configured to performembodiments described herein. In general, functions of a softwareapplication, program, tool, module, or layer described herein may beembodied directly in hardware, or embodied as software executed by aprocessor, or embodied as a combination of the two.

A software application, layer, or module may reside in RAM memory, flashmemory, ROM memory, EPROM memory, EEPROM memory, registers, hard disk, aremovable disk, a CD-ROM, or any other form of storage medium known inthe art. An exemplary storage medium is coupled to the processor suchthat the processor can read data from, and write data to, the storagemedium. In the alternative, the storage medium may be integral to theprocessor. The processor and the storage medium may reside in an ASIC.The ASIC may reside in a user device. In the alternative, the processorand the storage medium may reside as discrete components in a userdevice.

While the embodiments described herein have been described withreference to numerous specific details, one of ordinary skill in the artwill recognize that the embodiments can be embodied in other specificforms without departing from the spirit of the embodiments. Thus, one ofordinary skill in the art would understand that the embodimentsdescribed herein are not to be limited by the foregoing illustrativedetails, but rather are to be defined by the appended claims.

We claim:
 1. A method for producing a merged document, the methodcomprising: receiving, from a client system, a selection of at least afirst and a second documents, the first and second documents (i) beingencoded in respective first and second formats of different formattypes, and (ii) including respective first and second metadata;retrieving, from a storage system, the first and second documents;extracting content of the first and second documents by removing therespective first and second metadata and the respective first and secondformats to produce extracted first and second contents; dividing theextracted first and second contents into respective first and secondcontent fragments having respective first and second predeterminedamounts of data; storing the first and second content fragments in arespective first and second content entries, the first and secondcontent entries being associated with a respective first and a secondstorage locations of a content database; and producing a documentmapping associated with a merged document containing the first andsecond content fragments.
 2. The method of claim 1, wherein the documentmapping specifies that the first content entry be placed in the mergeddocument before the second content entry.
 3. The method of claim 1,wherein the document mapping comprises a plurality of data fieldsincluding at least a data field for a document identifier.
 4. The methodof claim 3, wherein the document identifier maps to the first and secondcontent entries in the content database.
 5. The method of claim 1,wherein the document mapping specifies the respective first and secondstorage locations of the first and second content entries in the contentdatabase.
 6. The method of claim 1, wherein the first and seconddocuments comprise original documents produced by respectively differentfirst and second document applications.
 7. The method of claim 1,wherein at least one of the first and second content fragments comprisesa single content fragment.
 8. The method of claim 1, wherein at leastone of the first and second content fragments comprises a plurality ofcontent fragments.
 9. The method of claim 1, further comprising storingthe document mapping to a document mapping data structure.
 10. Themethod of claim 9, further comprising: receiving a document identifierfor a new document; selecting, from the document mapping data structure,a corresponding document mapping having a document identifier matchingthe received document identifier for the new document; retrieving, fromthe content database, the first content entry and the second contententry based on the matching; and producing the new document by insertingcontent fragments of the retrieved first and second content entries intothe new document.
 11. The method of claim 10, wherein the contentfragments are inserted into the new document in an order specified bythe document mapping.
 12. The method of claim 10, further comprising:receiving, via a client user interface, a modification to at least onecontent fragment of the first and second content entries of the newdocument; and saving the modification to the at least one contentfragment to one of the first and the second content entries in thecontent database.
 13. A system for producing a merged document, thesystem comprising: a content manager engine configured for: receiving,from a client system, a selection of at least a first and a seconddocuments, the first and second documents (i) being encoded inrespective first and second formats having different format types, and(ii) including respective first and second metadata; retrieving, from astorage system, the first and second documents; extracting content ofthe first and second documents by removing the respective first andsecond metadata and the respective first and second formats to produceextracted first and second contents; dividing the extracted first andsecond contents into respective first and second content fragmentshaving respective first and second predetermined amounts of data;storing the first and second content fragments in a first and a secondcontent entries associated with a respective first and second storagelocations of a content database; and producing a document mappingassociated with a merged document containing the first and secondcontent fragments.
 14. The system of claim 13, wherein the documentmapping specifies that the first content entry be placed in the mergeddocument before the second content entry.
 15. The system of claim 13,wherein the document mapping comprises a plurality of data fieldsincluding at least a data field for a document identifier.
 16. Thesystem of claim 13, wherein the document mapping specifies therespective first and second storage locations of the first and secondcontent entries in the content database.
 17. The system of claim 13,wherein the first and second documents comprise original documentsproduced by respectively different first and second documentapplications.
 18. The system of claim 13, wherein at least one of thefirst and second content fragments includes one of (i) a single contentfragment, and (ii) a plurality of content fragments.
 19. The system ofclaim 13, wherein the content manager engine is further configured forstoring the document mapping to a document mapping data structure. 20.The system of claim 19, wherein the content manager engine is furtherconfigured for: receiving a document identifier for a new document;selecting, from the document mapping data structure, a correspondingdocument mapping having a document identifier matching the receiveddocument identifier for the new document; retrieving, from the contentdatabase, the first content entry and the second content entry based onthe matching; and producing the new document by inserting contentfragments of the retrieved first and second content entries into the newdocument.
 21. The system of claim 20, wherein the content manager engineis further configured for: receiving, via a client user interface, amodification to at least one content fragment of the first and secondcontent entries of the new document; and saving the modification to theat least one content fragment to one of the first and the second contententries in the content database.